#pragma once
#include "IProtocol.h"
#include "ProtocolFactory.h"
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>

class CProtocol_IP :	public IProtocol
{
public:
	virtual ~CProtocol_IP(void);
	
	friend class boost::serialization::access;
	
	template<class Archive> 
	void serialize(Archive & ar, const unsigned int version) 
	{
		ar & boost::serialization::base_object<IProtocol>(*this);
	}
	
	virtual StackUtils::e_Status Decode( CPacket& packet );
	virtual StackUtils::e_Status Encode( CPacket& packet );

	friend IProtocol * CProtocolFactory::CreateProtocol(const std::string& type);

private:
	CProtocol_IP(void);
};
